Automated identification of products using optical codes has been broadly implemented throughout industrial operations for many years. Optical codes are patterns composed of elements with different light reflectance or emission, assembled in accordance with predefined rules. The elements in the optical codes may be bars or spaces in a linear barcode, or a regular polygonal shape in a two-dimensional matrix code. The bar code or symbols can be printed on labels placed on product packaging, or directly on the product itself by direct part marking. The information encoded in a bar code or symbol can be decoded using various laser scanners or optical readers in fixed-mount installations, or portable installations.
Various business operations have come to rely upon the accuracy and availability of data collected from product automatic identification as a result of code reading. Therefore, the readers are required to not only deal with multiple symbologies, but also variation caused by printing errors and optical distortion. Usually there is a trade-off between the reading robustness on damaged codes and capability of tolerating distortions. When direct part marking becomes essential for tracking and traceability in highly complex and sensitive assembly systems, such as aerospace and defense systems, medical devices, and electronic assemblies, a robust decoding is the highest priority.
To achieve highly robust decoding, automated readers of two-dimensional images typically require the condition that the code be placed on a planar surface (so as to avoid high-order non-linear distortion), and the condition that the optical axis of a lens of the reader be placed perpendicularly with respect to the planar surface (so as to avoid perspective distortion). If a finder pattern of a symbology to be read is not distorted, it can be located according to its unique geometric characteristics (U.S. Pat. No. 6,128,414). Difficulties arise when these two conditions cannot be satisfied due either to the geometry of the product, or to a spatial limitation as to where the reader can be placed with respect to the product. The expected geometric characteristics of the finder pattern of a symbology in question may be distorted to an extent that an automated identification is difficult and time consuming, if not impossible.
There are two known solutions to these problems. The first solution is to use a locating and decoding method that can detect and tolerate various types of symbol damage and symbol distortion. A method for reading MaxiCode symbology with distortion is described in U.S. Pat. No. 6,340,119. A method for reading Code One symbology with perspective distortion is described in U.S. Pat. No. 5,862,267. To achieve a reader of multiple symbologies, a locating, and decoding method for each symbology needs to be devised (U.S. Pat. No. 6,097,839). To allow for reading distorted symbols of multiple symbology, each symbology-specific locating and decoding method needs to be modified so as to detect and tolerate distortion. However, this solution requires some undesirable trade-offs. It not only slows down the process of locating and decoding a symbol due to added computational complexity, but also reduces the reader's ability to handle burst noise, such as damaged codes.
The second solution is to employ camera calibration as widely used in 3D computer vision. Camera calibration is performed by observing a calibration object whose geometry in 3-D space is known with very good precision. The calibration object may consist of two or three planes orthogonal to each other, or a plane with checkerboard pattern that undergoes a precisely known translation. However, these approaches require an expensive calibration apparatus and an elaborate setup, as taught in O. Faugeras, Three-Dimensional Computer Vision: a Geometric Viewpoint, MIT Press, 1993, for example. An easy-to-use method for calibrating an image acquisition system with a camera being stationary with respect to a fixture frame of reference is disclosed in U.S. Pat. No. 6,798,925. This method requires using a non-rotationally symmetric fiducial mark having at least one precise dimension and being placed at a predetermined location on an object. These requirements are necessary for a machine vision system whose purpose is to measure or align an object. In comparison, it is not necessary to know or compute dimensions for a machine vision system whose purpose is to automatically identify an object based on reading a symbol, within which the information is encoded as different reflectance or emission of an assembly of modules, instead of the dimension of the modules. In addition, the requirement of a camera being at a fixed distance with respect to a surface of a fixture frame of reference may not be satisfied for a fixed-mount symbol reader that needs to read symbols off a variety of different surfaces of different heights, or a hand-held symbol reader that may be placed at variable distances from the objects carrying symbols.